package org.dydl.controller.system;
//package org.yorma.controller.system;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Map;
//import java.util.Objects;
//
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.alibaba.dubbo.config.annotation.Reference;
//import com.googlecode.genericdao.search.Search;
//import com.yorma.common.dto.ResponseMessage;
//import com.yorma.general.po.DepartFieldControl;
//import com.yorma.general.po.GoodsPn;
//import com.yorma.general.service.IDepartFieldControlService;
//
//@RestController
//@RequestMapping("api/departField")
//public class DepartFieldController {
//	
//	@Reference
//	IDepartFieldControlService departFieldControlService;
//
//	@SuppressWarnings("unchecked")
//	@RequestMapping("getFields")
//	public List<Map<String, Object>> getFields(Integer departId) {
//		Objects.requireNonNull(departId);
//		Field[] fields = GoodsPn.class.getDeclaredFields();
//		ResponseMessage msg = departFieldControlService.search(new Search().addFilterEqual("departId", departId).addFilterEqual("type", GoodsPn.class.getSimpleName()));
//		List<String> list = new ArrayList<>();
//		if (msg.getSuccess()) {
//			List<DepartFieldControl> departFieldControls = (List<DepartFieldControl>) msg.getData(); 
//			if (departFieldControls.size() > 0) {
//				list = Arrays.asList(departFieldControls.get(0).getFields().split(","));
//			}
//		}
//		List<Map<String,Object>> fieldList = new LinkedList<>();
//		String name;
//		for (Field field : fields) {
//			name = field.getName();
//			if (name.equals("serialVersionUID")) {
//				continue;
//			}
//			Map<String, Object> map = new HashMap<>();
//			map.put("name", name);
//			if (list.contains(name)) {
//				map.put("checked", true);
//			} else {
//				map.put("checked", false);
//			}
//			map.put("pId", 0);
//			fieldList.add(map);
//		}
//		
//		return fieldList;
//	}
//	
//	@SuppressWarnings("unchecked")
//	@RequestMapping("save") 
//	public ResponseMessage save(String[] fields, Integer departId) {
//		Objects.requireNonNull(departId);
//		ResponseMessage msg = departFieldControlService.search(new Search().addFilterEqual("departId", departId).addFilterEqual("type", GoodsPn.class.getSimpleName()));
//		List<DepartFieldControl> departFieldControls = null;
//		if (msg.getSuccess()) {
//			departFieldControls = (List<DepartFieldControl>) msg.getData(); 
//		}
//		DepartFieldControl departFieldControl;
//		if (departFieldControls != null && departFieldControls.size() > 0) {
//			departFieldControl = departFieldControls.get(0);
//		} else {
//			departFieldControl = new DepartFieldControl();
//			departFieldControl.setDepartId(departId);
//			departFieldControl.setType(GoodsPn.class.getSimpleName());
//		}
//		if (fields.length > 0) {
//			StringBuilder sBuilder = new StringBuilder();
//			for (String string : fields) {
//				sBuilder.append(string);
//				sBuilder.append(",");
//			}
//			String f = sBuilder.toString();
//			departFieldControl.setFields(f.substring(0, f.length() - 1));
//		} else {
//			departFieldControl.setFields(null);
//		}
//		
//		return departFieldControlService.save(departFieldControl);
//	}
//}
